package com.ruoyi.collect.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 菜谱管理对象 recipes
 * 
 * @author lpt
 * @date 2025-08-14
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CollectRecipes extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 菜谱唯一ID */
    private String id;

    /** 作者ID */
    @Excel(name = "作者ID")
    private String userId;

    /** 菜谱标题 */
    @Excel(name = "菜谱标题")
    private String title;

    /** 媒体类型：1-图片，2-视频 */
    @Excel(name = "媒体类型：1-图片，2-视频")
    private Long mediaType;

    /** 封面资源URL */
    @Excel(name = "封面资源URL")
    private String coverUrl;

    /** 通用简介 */
    @Excel(name = "通用简介")
    private String introduction;

    /** 视频补充描述（仅视频） */
    @Excel(name = "视频补充描述", readConverterExp = "仅=视频")
    private String videoDescription;

    /** 视频时长（秒，仅media_type=2） */
    @Excel(name = "视频时长", readConverterExp = "秒=，仅media_type=2")
    private String videoDuration;

    /** 浏览量 */
    @Excel(name = "浏览量")
    private String viewCount;

    /** 关联耗时表 */
    @Excel(name = "关联耗时表")
    private String cookTimeId;

    /** 关联难度表 */
    @Excel(name = "关联难度表")
    private String difficultyId;

    /** 关联分类表 */
    @Excel(name = "关联分类表")
    private String categoryId;

    /** 状态（0-正常，1-下架） */
    @Excel(name = "状态", readConverterExp = "0=-正常，1-下架")
    private Integer status;

    /** 收藏数 */
    @Excel(name = "收藏数")
    private String collectCount;

    /** 是否删除：0正常 1删除 */
    @Excel(name = "是否删除：0正常 1删除")
    private Integer del;

    @TableField(exist = false)
    private Users users;

    @TableField(exist = false)
    private CookTimeOptions cookTimeOptions;

    @TableField(exist = false)
    private Categories categories;

    @TableField(exist = false)
    private DifficultyOptions difficultyOptions;

    @TableField(exist = false)
    private PointFlow pointFlow;

    @TableField(exist = false)
    private List<Object> materialRows;

    @TableField(exist = false)
    private List<Object> steps;

    /** 烹饪时间名称（非数据库字段） */
    @TableField(exist = false)
    private String cookTimeName;

    /** 难度名称（非数据库字段） */
    @TableField(exist = false)
    private String difficultyName;
}
